#定义空列表
list = []
#类实例化方式定义
# li = list()
print(list)
list.insert(0,"python")
print(list)

list2 = ["web自动化","接口自动化","测试基础"]
print(list2)
list2.insert(2,"python")
print(list2)


# 列表元素索引
name_list = ['张三','李四','王五']
print(name_list[0])
print(name_list[1])
print(name_list[2])
# 查询不存在的索引
# print(name_list[4])
# # 总结：如果查询的下标（索引）不存在，则代码报错【索引超出了范围】

# 根据元素查索引
print(name_list.index("王五")) # 下标是2


# 列表元素统计：元素统计
data_list = ['python','java','python','php','python']  #定义列表
# 统计python出现的次数
num = data_list.count("python")
print(num)

# 统计java出现次数
print(data_list.count("java"))
print(data_list.count("C++"))
# 结论：
# 统计列表元素出现的次数
# 元素不存在统计结果为0

# 列表元素增加：末尾增加元素
# 定义列表
val_list = ["Web自动化", "UI自动化", "接口自动化"]
# 添加元素（末尾添加：APP自动化）
val_list.append("APP自动化")

print(val_list)# 查看原来列表

val_list.append(11)# 增加数字元素
print(val_list)
# 列表属于可变数据类型，增加元素后，原有的列表的值会发生变化
# 追加元素每次只能追加1个，而且每次追加的位置在列表的末尾




val_list = ["Web自动化", "UI自动化", "接口自动化"]
val_list.insert(1,"APP自动化")
print(val_list)
val_list.insert(6,"java")
print(val_list)
# 指定的位置如果存在，按照指定位置插入元素；如果不存在，默认添加到列表的末尾




# 合并
info1 = [1,2,3]
info2 = [4,5,6]
info1.extend(info2)
info2.extend(info1)
print(info1)
print(info2)


# 列表元素删除:指定索引位置删除
# pop（索引）
val_list = ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化', 'java']
val_list.pop(2)  # 删除下标为2对应元素
print(val_list) #查看列表
val_list.pop()# 下标为空删除
print(val_list) #查看列表

# val_list.pop(7) # IndexError: pop index out of range
# print(val_list)   # 下标存在直接按照指定下标删除;如果下标不存在，直接报错，如果下标不写，默认删除最后一个元素


# 指定数据删除
# remove（元素）
# 定义列表
val_list = ['Web自动化', 'APP自动化', 'java', 'UI自动化', '接口自动化', 'java']
val_list.remove('APP自动化')# 删除：“APP自动化”
print(val_list)
val_list.remove('java')
print(val_list)
# 删除：python（不存在）
# val_list.remove("python") # 报错：ValueError: list.remove(x): x not in list
# 总结：如果元素存在直接删除，如果存在多个元素默认删除第一个匹配到的，如果元素不不存在直接删除，报错



# 列表元素修改，修改指定索引数据    列表名[索引]=新数据
# 指定索引存在，则该位置的元素被修改，如果不存在，则代码报错
vall_list = ['Web自动化', 'APP自动化', 'UI自动化', '接口自动化']
vall_list[2] = "界面自动化"
print(vall_list)
# val_list[5] = "自动化" # IndexError: list assignment index out of range
# 结论：下标存在直接修改对应位置的元素；下标不存在直接报错





# 列表元素反转：元素倒置（反转），reverse（）
info3 = [8, 100, 30, 10, 40, 2]
info3.reverse()# 反转
print(info3)


# 列表元素排序：大小排序   sort(severse=False)从小到大（默认排序）
# sort(severse=True) 降序，从大到小

info = [8, 100, 30, 10, 40, 2]
info.sort()  # 从小到大排序 severse=False默认可以不写
info.sort(reverse=False)
print(info)
info.sort(reverse=True)
print(info)




# 列表的嵌套元素获取：列表中的元素还是列表
# 列表中的元素还是列表：列表嵌套，案例1
student_list = [["张三", "18", "功能测试"], ["李四", "20", "自动化测试"], ["王五", "22",
["python", "java"]]]
# 查找元素18，如何查找？
print(student_list[0])
aa = student_list[0]
print(aa[1])
print(student_list[0][1])
print(student_list[1][0])# 李四
print(student_list[2][2][0])

# 列表中的元素还是列表：列表嵌套，案例2
# 定义非空列表(把每种测试结果的数据放在一起)
login_data = [
    ["13488888888", "123456", "8888"],
    ["13488888888", "666666", "8888"],
    ["13488888880", "123456", "8888"],
    ["13488888888", "123456", "0000"]
]
# 遍历
for i in login_data:
    # print(i) # 每一个中括号的数据 ，i = ["13488888888", "123456", "8888"]
    # 判断手机号和密码
    if i[0] == "13488888888" and i[1] == "123456":
# 判断验证码
        if i[2] == "8888":
            print("登录成功")
        else:
            print("验证码错误")
    else:
            print("用户名或密码错误")












